﻿using System.Linq;
using Castle.Windsor;
using GroceryList.Front.Web.Installers;
using GroceryList.Front.Web.Service;
using Xunit;

namespace GroceryList.Test
{
    public class ProductoServiceTest:BaseServiceTest
    {
        private readonly IProductoService _productoService;

        public ProductoServiceTest()
        {
            var containerWithControllers =
                new WindsorContainer().
                    Install(new PersistenceInstaller()).
                    Install(new RepositoryInstaller()).
                    Install(new AutomapperInstaller()).
                    Install(new ServiceInstaller());
            _productoService = containerWithControllers.Resolve<IProductoService>();
        }


        [Fact]
        public void CanObtainAllProducts()
        {
            var productos = _productoService.ObtenerTodos();
            Assert.True(productos.Count() > 0);
            Assert.True(productos.Select(pr => pr.Nombre).Contains("Leche"));
            Assert.True(productos.Select(pr => pr.Nombre).Contains("Lechuga"));
            Assert.True(productos.Select(pr => pr.Nombre).Contains("Tomate"));
        }

        [Fact]
        public void DadoUnNombreDeProductoPuedoAnhadirloALaColeccionDeProductos()
        {
            const string nombreProducto = "Coffe";

            _productoService.CrearProducto(nombreProducto);
            var productos = _productoService.ObtenerTodos();
            Assert.True(productos.Select(pr => pr.Nombre).Contains(nombreProducto));
        }
    }
}
